//导入验证规则的包
const Joi = require("joi")

//定义用户名、密码验证规则
const username = Joi.string().alphanum().min(1).max(10).required().error(errors => {
    for (err of errors){
        switch (err.code) {
            case 'string.alphanum':
                return new Error("只能包含a-zA-Z0-9")
            case 'string.min':
                return new Error("最小长度为1")
            case 'string.max':
                return new Error("最大长度为10")
            case 'string.empty':
                return new Error("用户名不能为空")
        }
    }
})
//定义非空字符开头，且6到12位的密码
const password = Joi.string().pattern(new RegExp('^[\\S]{6,12}$')).required()
    .messages({
        'string.empty': '密码不能为空',
        'string.pattern.base': '密码必须是6到12位的非空字符'
    })

//导出验证规则对象
exports.reg_login_schema = {
    body: {
        username,
        password
    }
}


//定义 id、nickname、email验证规则
const user_id = Joi.number().integer().min(1).required() //要求为数字类型、整数、最小为1、必填
const nick_name = Joi.string().required() //要求字符串、必填
const user_email = Joi.string().email().required() //要求字符串、邮箱格式、必填

//导出更新用户新的验证规则对象
exports.update_userInfo_schema = {
    body: {
        id: user_id,
        nickname: nick_name,//用 nick_name 规则去校验客服端提交的 nickname 数据是否要求
        email: user_email,//用 user_email 规则去校验客服端提交的 email 数据是否要求
    }
}


//导出修改密码对象
exports.pwd_schema = {
    body: {
        password,
        old_password: Joi.not(Joi.ref('password')),//旧密码不能与新密码相同
        repeat_password: Joi.ref('password'),//第一次与第二次输入的密码必须相同
    }

}

const avatar = Joi.string().dataUri().required()
//导出头像验证对象
exports.avatar_schema = {
    body: {
        avatar
    }
}

